<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{margin: 0;padding: 0;border: none;}
        body{width: 100%;}
        .item{
            padding-left: 5px;
            padding-right: 5px;
            float: left;
        }
        img{
            width: 180px;
            padding: 3px;
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <script>
        window.addEventListener("DOMContentLoaded",function(){
            var strHtml=``;
            for(var i=1;i<=42;i++){
                strHtml+=`<div class="item"><img src="images1/img (${i}).jpg" alt=""></div>`
            }
            document.body.innerHTML=strHtml;
        })
        // 封装一个方法用来找出其中的最小高度的下标
        function getMinIndex(arr){
            return arr.findIndex(item=>item==Math.min(...arr));
        }

        //图片已经出现了,才能重新洗牌(重新摆放位置);
        // 图片带有src属性,属于外部资源,
        //要等到外部资源加载完成,才触发.. 使用onlod事件
        window.onload=function(){    
            // 1.拿到所有图片
            var oItems=document.querySelectorAll(".item");
            // 2.创建一个空数组
            var arr1=[];
            for(var i=0;i<oItems.length;i++){
                if(i<3){
                    // 3.前三张图片加载
                    arr1[i]=oItems[i].offsetHeight;
                }else{
                    // 4.计算图片的高度,宽度
                    oItems[i].style.position="absolute";
                    var index=getMinIndex(arr1);
                    // 高度
                    oItems[i].style.top=arr1[index]+"px";
                    // 宽度
                    oItems[i].style.left=index*oItems[i].offsetWidth+"px";
                    arr1[index]=arr1[index]+oItems[i].offsetHeight;
                }
            }
        }
    </script>
</body>
</html>